package com.sojson.config.init;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import com.sojson.util.DictUtil;
import com.sojson.util.SystemParamUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * 系统参数初始化类(必须通过@Bean注解注入,否则会提前执行,导致出现一些空指针异常)</BR>
 * 执行顺序由@org.springframework.context.annotation.DependsOn指定</BR>
 *
 * @author liu
 * @date 2021-09-13
 */
@Slf4j
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SystemParamInit implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        // 初始化字典属性
        initDict();
        // 初始化系统属性
        initSystemProperties();
    }

    /**
     * 设置字典
     */
    public void initDict() throws Exception {
        // 开始设置字典
        log.info("开始设置字典！");

        DictUtil.load();

        log.info("字典已加载到缓存！");

        // 设置字典完成
        log.info("系统字典设置完成！");
    }

    /**
     * 设置系统属性
     * @throws Exception
     */
    public void initSystemProperties() throws Exception {
        // 开始设置系统属性
        log.info("开始设置系统属性！");

        // 加载系统属性到缓存
        SystemParamUtil.load();

        log.info("系统属性已加载到缓存！");

        // 设置系统属性完成
        log.info("系统属性设置完成！");
    }

}